package com.lagou.server;

import com.lagou.model.User;

/**
 * 编程实现数据的存取
 * dao 数据访问对象 data access object
 */
public class ServerDao {

    // 应该是一个单例
    // 2.声明本类类型的引用指向本类类型的对象艾格纳并使用private static 关键字修饰
    private static ServerDao sin = null; // 饿汉式new ServerDao();
    private UserInfoManager uim;

    // 1.私有化构造方法，使用private 方法修饰
    private ServerDao() {
        uim = new UserInfoManager();
    }

    // 3.提供公有的get方法，负责将上述对象返回出去，使用public static 关键字修饰
    public static ServerDao getInstance() {
        // 优化，其实，只需要第一次进来再去加锁
        if (null == sin) {
            synchronized (ServerDao.class) { // 反射
                if (null == sin) {
                    sin = new ServerDao();
                }
            }
        }
        return sin;
    }

    /**
     * 编程实现管理员帐号和密码的校验，并将结果返回出去
     * @param user
     * @return
     */
    public synchronized boolean ServerManagerCheck(User user) {
        //默认管理员帐号密码 admin 123456
        if("admin".equals(user.getUserName()) && "123456".equals(user.getPassWord())) {
            return true;
        }

        return false;
    }
    /**
     * 编程实现学员帐号和密码的校验，并将结果返回出去
     * @param user
     * @return
     */
    public synchronized boolean ServerUserCheck(User user) {

        if(null == user) {
            System.out.println("无效的user信息");
            return false;
        }
        User user1 = uim.findUser(user.getUserName());
        if( null != user1 && user1.getPassWord().equals(user.getPassWord())) {
            return true;
        }

        return false;
    }

    public boolean ServerModifyUserPassword(User user) {
        if(null == user) {
            System.out.println("无效的user信息");
            return false;
        }
        User user1 = uim.findUser(user.getUserName());
        user1.setPassWord(user.getPassWord());
        return true;
    }

    public boolean ServerAddUser(User user) {
        return uim.addUser(user);
    }

    public boolean ServerDelUser(User user) {
        return uim.deleteUser(user.getUserName());
    }

    public User ServerFindUser(User user) {
        return uim.findUser(user.getUserName());
    }

    public boolean ServerModUser(User user) {
        return uim.updateUser(user.getUserName(), user);
    }

}
